/**
 * 原始数据
 * 只有两种类型
 * 一种是目录类型{name,directories}
 * 另一种是文件类型{name,size}
 */
const docData = {
    name: '护理制度',
    directories: [
        {
            name: '卫生厅文件',
            directories: [
                {name: '卫生厅文件1', size: 1,remark: '卫生厅文件'},
                {name: '卫生厅文件2', size: 2,remark: '卫生厅文件'},
                {name: '卫生厅文件3', size: 5,remark: '卫生厅文件'},
            ],
        },
        {
            name: '科室管理制度',
            directories: [
                {
                    name: '护理常规',
                    directories: [
                        {name: '护理常规1', size: 12,remark: '护理常规'},
                        {name: '护理常规2', size: 34,remark: '护理常规'},
                    ]
                },
                {name: '科室管理制度文件1', size: 10,remark: '科室管理制度文件'},
                {name: '科室管理制度文件2', size: 109,remark: '科室管理制度文件'},
                {name: '科室管理制度文件3', size: 2020,remark: '科室管理制度文件'}
            ],
        },
        {
            name: '护理管理制度',
            directories: [
                {
                    name: '各级人员岗位职责',
                    directories: [
                        {name: '各级人员岗位职责文件1', size: 122,remark: '各级人员岗位职责文件'},
                        {name: '各级人员岗位职责文件2', size: 211,remark: '各级人员岗位职责文件'},
                        {name: '各级人员岗位职责文件3', size: 392,remark: '各级人员岗位职责文件'}
                    ]
                },
                {
                    name: '各类流程',
                    directories: [
                        {name: '各类流程文件1', size: 222,remark: '各类流程文件'},
                        {name: '各类流程文件2', size: 1090,remark: '各类流程文件'},
                        {name: '各类流程文件3', size: 3931,remark: '各类流程文件'}
                    ]
                },
            ],
        },
    ],
}

const dataHelper = {
    convert2JstreeData(directories) {//Only show directories
        if (!directories)
            return []

        const results = directories.filter(dataHelper.isDirectory).map(item => {
            return {
                text: item.name,
                children: dataHelper.convert2JstreeData(item.directories),
                original: item,//Save the refer
            }
        })

        return results
    },
    getDirectNum(node) {
        if (dataHelper.isFile(node))
            return 0

        return node.directories.length - dataHelper.getFileNum(node)
    },
    getTotalSize(node) {
        if (!node)
            return 0

        if(dataHelper.isFile(node))
            return node.size

        return node.directories.reduce((acc,cur) => {
            return acc + dataHelper.getTotalSize(cur)
        },0)
    },
    getFileNum(node) {
        if(dataHelper.isFile(node))
            return 0

        return node.directories
            .filter(dataHelper.isFile).length
    },
    isFile(node){
        return node.size != null
    },
    isDirectory(node){
        return !dataHelper.isFile(node)
    }
}
